﻿using System;
using System.Collections.Generic;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

using System.IO;

using Might.Infrastructure.Events;

namespace Might.Infrastructure.DOM {

    public interface IFileSystemRoot : IDomNode {

        event EndProgressEventHandler LoadListFinished;    
        
        string Name { get; set; }
        string Uri { get; set; }
                
        void LoadList();
        void LoadList( IFile from );

    }
    
    public interface ISvnFileSystemRoot : IFileSystemRoot {

        string Username { get; set; }
        string Password { get; set; }

        void CheckIn();
        void CheckOut();
        
    }
    
    public interface ILocalFileSystemRoot : IFileSystemRoot {}
        
    public interface IFile : IDomNode {
    
        string Name { get; }
        string Uri { get; }
        bool IsDir { get; }
        MemoryStream Data { get; }
                
        IFileSystemRoot FileSystem { get; }                        
        
        void Move( IFile file );
        void Rename( string newName );
        void Save( IFile file );
        void Delete();
        
    }
    
    public interface ILocalFile : IFile {        
        FileInfo FileSystemInfo { get; }        
    } 
    
    public interface ISvnFile : IFile {     
        void CheckIn();
        void CheckOut();        
    }                
    
}
